<?php defined('BASEPATH') || exit('No direct script access allowed');

class Wechatusers_model extends BF_Model
{
    protected $table_name	= 'wechat_users';
	protected $key			= 'id';
	protected $date_format	= 'datetime';

	protected $log_user 	= false;
	protected $set_created	= true;
	protected $set_modified = false;
	protected $soft_deletes	= false;

    protected $created_field = 'created_on';
    // protected $deleted_field     = 'deleted';

	// Customize the operations of the model without recreating the insert,
    // update, etc. methods by adding the method names to act as callbacks here.
	protected $before_insert 	= array();
	protected $after_insert 	= array();
	protected $before_update 	= array();
	protected $after_update 	= array();
	protected $before_find 	    = array();
	protected $after_find 		= array();
	protected $before_delete 	= array();
	protected $after_delete 	= array();

	// For performance reasons, you may require your model to NOT return the id
	// of the last inserted row as it is a bit of a slow method. This is
    // primarily helpful when running big loops over data.
	protected $return_insert_id = true;

	// The default type for returned row data.
	protected $return_type = 'object';

	// Items that are always removed from data prior to inserts or updates.
	protected $protected_attributes = array();

	// You may need to move certain rules (like required) into the
	// $insert_validation_rules array and out of the standard validation array.
	// That way it is only required during inserts, not updates which may only
	// be updating a portion of the data.
	protected $validation_rules 		= array(
		
	);
	protected $insert_validation_rules  = array();
	protected $skip_validation 			= true;

    /**
     * Constructor
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Find all user records and the associated role information.
     *
     * @return boolean An array of objects with each user's information.
     */
    public function find_all()
    {
        return parent::find_all();
    }


    // 关注、授权登录微信公众号
    public function subscribe($fromUser) {
        $user = $this->find_by('openid', $fromUser->openid);

        $fromUser->tagid_list = implode(',', $fromUser->tagid_list);
        $userData = ['subscribe'=>$fromUser->subscribe, 'openid'=>$fromUser->openid, 'nickname'=>$fromUser->nickname, 
                    'sex'=>$fromUser->sex, 'language'=>$fromUser->language, 'city'=>$fromUser->city, 
                    'province'=>$fromUser->province, 'country'=>$fromUser->country, 'headimgurl'=>$fromUser->headimgurl, 
                    'subscribe_time'=>$fromUser->subscribe_time, 'remark'=>$fromUser->remark, 'groupid'=>$fromUser->groupid, 
                    'tagid_list'=>$fromUser->tagid_list];
        if ($user) {
            $this->update(['openid'=>$fromUser->openid], $userData);
            return $user->code;
        } else {
            $this->load->helper('string');
            $code = random_string('alnum', 8);
            $userData['code'] = $code;
            $id = $this->insert($userData);
            return $code;
        }
    }
    // 取消关注微信公众号
    public function unsubscribe($fromUser) {
        $this->update(['openid'=>$fromUser->openid], ['subscribe'=>0]);
    }

}